package com.struts.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.struts.pojo.Person;

/**
 * map栈数据存取操作
 * @author LC
 *
 */
public class OgnlForMapStackAction extends ActionSupport{

	//==========================================================================\\
	/**
	 * 1、将基本数据类型、字符串、pojo对象、map、集合放入到map栈中，并在视图页面通过struts2提供的ognl标签获取对应的value值进行显示
	 * 2、存取map栈中request域、session域、application域、parameters对象、attr对象中的数据
	 * 方式：
	 * 	ActionContext.getContext().put(key, value) ;
	 * @return
	 */
	
	
	/**
	 * 1、向map栈中存放基本数据类型及字符串数据，并在视图页面中通过ognl标签进行显示
	 * @return
	 */
	public String addBaseTypeToMapStack() {
		ActionContext.getContext().put("int_type", 1) ;
		ActionContext.getContext().put("double_type", 1.23) ;
		ActionContext.getContext().put("string_type", "ccccccc") ;
		return "mapStack_baseType" ;
	}
	
	/**
	 * 2、向map栈中存放pojo对象，并在页面中显示
	 */
	public String addPojoToMapStack() {
		Person person = new Person(3L, "李四") ;
		ActionContext.getContext().put("person", person) ;
		return "mapStack_pojo" ;
	}
	
	/**
	 * 3、向map栈中存放map对象，并在页面进行显示
	 */
	public String addMapToMapStack() {
		Map<String, Person> map = new HashMap<String, Person>() ;
		map.put("person1", new Person(5l,"张三01")) ;
		map.put("person2", new Person(5l,"张三02")) ;
		map.put("person3", new Person(5l,"张三03")) ;
		ActionContext.getContext().put("map", map) ;
		return "mapStack_map" ;
	}
	
	/**
	 * 4、向map栈中存放list集合，并在页面显示
	 */
	public String addListToMapStack() {
		List<Person> list = new ArrayList<Person>() ;
		list.add(new Person(5L,"王五01")) ;
		list.add(new Person(5L,"王五02")) ;
		list.add(new Person(5L,"王五03")) ;
		ActionContext.getContext().put("list", list) ;
		return "mapStack_list" ;
	}
	
	/**
	 * 5、向map栈中的request域、session域、application域中添加数据并在页面中显示
	 */
	public String addBaseTypeToMapStack_scopeObj() {
		ServletActionContext.getRequest().setAttribute("data", "request_data") ;
		ServletActionContext.getServletContext().setAttribute("data", "application_data") ;
		ActionContext.getContext().getSession().put("data", "session_data") ;
		ActionContext context = ActionContext.getContext() ;
		return "mapStack_scopeObj_baseType" ;
	}
	
	/**
	 * 6、把一个pojo对象放入到session域中(request域与application域类似)并在页面中显示数据
	 */
	public String addPojoToMapStack_session() {
		Person person = new Person(3L, "李四") ;
		ServletActionContext.getContext().getSession().put("person", person) ;
		return "mapStack_session_pojo" ;
	}
	
	/**
	 * 7、把一个map放入到request域中(session域与application域类似)并在页面中显示数据
	 */
	public String addPojoToMapStack_request() {
		Map<String, Person> map = new HashMap<String, Person>() ;
		map.put("person1", new Person(5l,"张三01")) ;
		map.put("person2", new Person(5l,"张三02")) ;
		map.put("person3", new Person(5l,"张三03")) ;
		ServletActionContext.getRequest().setAttribute("map", map) ;
		return "mapStack_request_map" ;
	}
	
	/**
	 * 7、把一个map放入到application域中(request域与session域类似)并在页面中显示数据
	 */
	public String addPojoToMapStack_application() {
		List<Person> list = new ArrayList<Person>() ;
		list.add(new Person(5L,"王五01")) ;
		list.add(new Person(5L,"王五02")) ;
		list.add(new Person(5L,"王五03")) ;
		ServletActionContext.getServletContext().setAttribute("list", list) ;
		return "mapStack_application_list" ;
	}
}
